#ifndef __ESP8266_H__
#define __ESP8266_H__

#include "stm32f10x.h"
#include <stdio.h>
#include "user_type_def.h"
#include "BSP/bsp_usart.h"
#include "bit_band.h"
#include "timer_delays.h"

typedef enum{
    STA,
    AP,
    STA_AP  
} ENUM_NetModeTypeDef;

typedef enum{
	 enumTCP,
	 enumUDP,
} ENUM_NetProTypeDef;

// 将jinlong的串口配置抽象
typedef struct
{
    uint32_t RCC_APB2Periph_GPIOxEN;  // 使能引脚外设时钟
    uint32_t RCC_APB2Periph_GPIOxRST; // 复位引脚外设时钟
    GPIO_TypeDef *GPIOxEN;            // 使能引脚所在的GPIOx
    GPIO_TypeDef *GPIOxRST;           // 复位引脚所在的GPIOx
    uint16_t en_pin;                  // 使能引脚号
    uint16_t rst_pin;                 // 复位引脚号
    COM_Enum comx;                    // 串口号
    u32 baudrate;                     // 波特率
} ESP8266_ResTypeDef;

void ESP8266_Init(void);//初始化
bool ESP8266_ATTest(void);//测试AT指令
bool ESP8266_ConnTest(void);//测试网络连接
void ESP8266_RecStr(u8 c);//接收数据
bool ESP8266_SendCMD(const char *cmd, const char *replay1, const char *replay2, u16 dly);//发送指令

void ESP8266_SetFlag(void);
bool ESP8266_BuildTCPConn(const char *ssid, const char *passwd, const char *sip, u16 port);

u16 ESP8266_SendString(FunctionalState enumEnUnvarnishTx, const char *str);
u8 ESP8266_GetMsg(void);


#endif /* __BSP_ESP8266_H__ */
